import java.util.HashMap;
import java.util.Map;

public class ReDuplicateElements {
    public static boolean containsNearbyDuplicate(int[] nums, int k) {
        Map<Integer, Integer> map = new HashMap<>();

        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(nums[i]) && Math.abs(map.get(nums[i]) - i) <= k) {
                return true;
            }

            map.put(nums[i], i);
        }

        return false;
    }

    public static void main(String[] args) {
        // 测试用例1：存在重复元素且距离不超过k
        int[] nums1 = {1, 2, 3, 1};
        int k1 = 3;
        System.out.println(containsNearbyDuplicate(nums1, k1)); // 输出: true

        // 测试用例2：存在重复元素但距离超过k
        int[] nums2 = {1, 0, 1, 1};
        int k2 = 1;
        System.out.println(containsNearbyDuplicate(nums2, k2)); // 输出: true

        // 测试用例3：不存在重复元素
        int[] nums3 = {1, 2, 3, 4};
        int k3 = 2;
        System.out.println(containsNearbyDuplicate(nums3, k3)); // 输出: false

        // 测试用例4：k为0的情况
        int[] nums4 = {1, 1};
        int k4 = 0;
        System.out.println(containsNearbyDuplicate(nums4, k4)); // 输出: false
    }
}